logo
Published on

删除 CocosCreator 项目中多余的 meta 文件

Authors
  • avatar
    Name
    Muzzik(马赛克)
    Twitter

在 CocosCreator 中,最近的版本不会删除多余的 meta 文件(只有 meta 文件而没有对应文件)

直接用 GPT 生成的代码改了下,直接用 ts-node 运行就行,deleteMetaFiles 参数替换为自己项目的路径

import fs from 'fs'
import path from 'path'

function deleteMetaFiles(folderPath: string) {
  // 读取文件夹中的内容
  fs.readdir(folderPath, (err, files) => {
    if (err) {
      console.error('Error reading folder:', err)
      return
    }

    // 遍历文件夹中的每个文件或文件夹
    files.forEach((file) => {
      const filePath = path.join(folderPath, file)

      // 检查当前路径是否是文件夹
      fs.stat(filePath, (err, stats) => {
        if (err) {
          console.error('Error retrieving file stats:', err)
          return
        }

        if (stats.isDirectory()) {
          // 如果是文件夹,则递归调用 deleteMetaFiles() 函数来处理子文件夹
          deleteMetaFiles(filePath)
        } else if (filePath.endsWith('.meta')) {
          // 如果是文件,并且存在相应的 .meta 文件,则删除它
          const metaFilePath = filePath.slice(0, -5)
          if (!fs.existsSync(metaFilePath)) {
            fs.unlink(filePath, (err) => {
              if (err) {
                console.error('Error deleting .meta file:', err)
              } else {
                console.log('Deleted .meta file:', filePath)
              }
            })
          }
        }
      })
    })
  })
}

// 调用函数开始遍历并删除单独的 .meta 文件
deleteMetaFiles('I:/creator/mk_framework/assets')